package main

import (
	"fmt"
	"math/rand"
)

func main() {
	fmt.Println("==================作业一=====================")
	//s1 := make([]int, 3, 4)
	//s2 := append(s1, 1)
	/*
		s1 中值为[0 0 0]
		s2 的值为[0 0 0 1]  cap为4，没有超过最大容量，所以不扩容
		s1或s2进行修改之后都会相互影响，因为s1和s2此时的底层数组索指向的都是同一个（内存地址相同），相当于共用底层数组
		如果s2此时再添加一个元素，那么cap值大于4，会生成一个新的底层数组（指向新的内存地址），此时再进行更新就不相互影响了
	*/
	fmt.Println(`
s1 中值为[0 0 0]
s2 的值为[0 0 0 1]  cap为4，没有超过最大容量，所以不扩容
s1或s2进行修改之后都会相互影响，因为s1和s2此时的底层数组索指向的都是同一个（内存地址相同），相当于共用底层数组
如果s2此时再添加一个元素，那么cap值大于4，会生成一个新的底层数组（指向新的内存地址），此时再进行更新就不相互影响了`)
	fmt.Println("==================作业二=====================")
	// 定义数组
	var a = [...]int{1, 4, 9, 16, 2, 5, 10, 15}
	// 定义切片
	var b = make([]int, 0)
	// 定义变量
	var c int
	// 循环数组
	for i, _ := range a {
		// 判断当前索引是否大于0并且当前索引减去上一个索引得1（表示相邻字符）就进行相加
		if i > 0 && (i-(i-1) == 1) {
			c = a[i] + a[i-1]
			b = append(b, c)
		}
	}
	// 打印切片
	fmt.Println(b)
	fmt.Println("==================作业三=====================")
	for i := -100; i < 100; i++ {
		fmt.Println(rand.Intn(201) - 100)
	}
}

// 批改意见
// 1. s1和s2虽然公用一个底层数组，但是s1和s2的长度不同，因此s2修改最后一个元素时，不影响切片s1.
// 2. 最后一题没有对输出元素进行统计，也没有进行排序